diff --git a/system/database/drivers/oci8/oci8_driver.php b/system/database/drivers/oci8/oci8_driver.php
index 14df104..3a05ce3 100644
--- a/system/database/drivers/oci8/oci8_driver.php
+++ b/system/database/drivers/oci8/oci8_driver.php
@@ -1,4 +1,4 @@
-<?php  if ( ! defined('BASEPATH')) exit('No direct script access allowed');
+<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
 /**
  * CodeIgniter
  *
@@ -6,7 +6,7 @@
  *
  * @package		CodeIgniter
  * @author		ExpressionEngine Dev Team
- * @copyright   Copyright (c) 2008 - 2011, EllisLab, Inc.
+ * @copyright  Copyright (c) 2008 - 2011, EllisLab, Inc.
  * @license		http://codeigniter.com/user_guide/license.html
  * @link		http://codeigniter.com
  * @since		Version 1.0
@@ -23,7 +23,7 @@
  * class is being used or not.
  *
  * @package		CodeIgniter
- * @subpackage  Drivers
+ * @subpackage Drivers
  * @category	Database
  * @author		ExpressionEngine Dev Team
  * @link		http://codeigniter.com/user_guide/database/
@@ -37,7 +37,7 @@
  *
  * NOTE: this uses the PHP 4 oci methods
  *
- * @author	  Kelly McArdle
+ * @author	 Kelly McArdle
  *
  */
 
@@ -74,8 +74,8 @@
 	/**
 	 * Non-persistent database connection
 	 *
-	 * @access  private called by the base class
-	 * @return  resource
+	 * @access private called by the base class
+	 * @return resource
 	 */
 	function db_connect()
 	{
@@ -87,8 +87,8 @@
 	/**
 	 * Persistent database connection
 	 *
-	 * @access  private called by the base class
-	 * @return  resource
+	 * @access private called by the base class
+	 * @return resource
 	 */
 	function db_pconnect()
 	{
@@ -116,8 +116,8 @@
 	/**
 	 * Select the database
 	 *
-	 * @access  private called by the base class
-	 * @return  resource
+	 * @access private called by the base class
+	 * @return resource
 	 */
 	function db_select()
 	{
@@ -145,8 +145,8 @@
 	/**
 	 * Version number query string
 	 *
-	 * @access  public
-	 * @return  string
+	 * @access public
+	 * @return string
 	 */
 	function _version()
 	{
@@ -158,9 +158,9 @@
 	/**
 	 * Execute the query
 	 *
-	 * @access  private called by the base class
-	 * @param   string  an SQL query
-	 * @return  resource
+	 * @access private called by the base class
+	 * @param  string an SQL query
+	 * @return resource
 	 */
 	function _execute($sql)
 	{
@@ -175,9 +175,9 @@
 	/**
 	 * Generate a statement ID
 	 *
-	 * @access  private
-	 * @param   string  an SQL query
-	 * @return  none
+	 * @access private
+	 * @param  string an SQL query
+	 * @return none
 	 */
 	function _set_stmt_id($sql)
 	{
@@ -194,9 +194,9 @@
 	 *
 	 * If needed, each database adapter can prep the query string
 	 *
-	 * @access  private called by execute()
-	 * @param   string  an SQL query
-	 * @return  string
+	 * @access private called by execute()
+	 * @param  string an SQL query
+	 * @return string
 	 */
 	function _prep_query($sql)
 	{
@@ -206,10 +206,10 @@
 	// --------------------------------------------------------------------
 
 	/**
-	 * getCursor.  Returns a cursor from the datbase
+	 * getCursor. Returns a cursor from the datbase
 	 *
-	 * @access  public
-	 * @return  cursor id
+	 * @access public
+	 * @return cursor id
 	 */
 	function get_cursor()
 	{
@@ -220,19 +220,19 @@
 	// --------------------------------------------------------------------
 
 	/**
-	 * Stored Procedure.  Executes a stored procedure
+	 * Stored Procedure. Executes a stored procedure
 	 *
-	 * @access  public
-	 * @param   package	 package stored procedure is in
-	 * @param   procedure   stored procedure to execute
-	 * @param   params	  array of parameters
-	 * @return  array
+	 * @access public
+	 * @param  package	 package stored procedure is in
+	 * @param  procedure  stored procedure to execute
+	 * @param  params	 array of parameters
+	 * @return array
 	 *
 	 * params array keys
 	 *
-	 * KEY	  OPTIONAL	NOTES
+	 * KEY	 OPTIONAL	NOTES
 	 * name		no		the name of the parameter should be in :<param_name> format
-	 * value	no		the value of the parameter.  If this is an OUT or IN OUT parameter,
+	 * value	no		the value of the parameter. If this is an OUT or IN OUT parameter,
 	 *					this should be a reference to a variable
 	 * type		yes		the type of the parameter
 	 * length	yes		the max size of the parameter
@@ -275,8 +275,8 @@
 	/**
 	 * Bind parameters
 	 *
-	 * @access  private
-	 * @return  none
+	 * @access private
+	 * @return none
 	 */
 	function _bind_params($params)
 	{
@@ -386,10 +386,10 @@
 	/**
 	 * Escape String
 	 *
-	 * @access  public
-	 * @param   string
+	 * @access public
+	 * @param  string
 	 * @param	bool	whether or not the string will be used in a LIKE condition
-	 * @return  string
+	 * @return string
 	 */
 	function escape_str($str, $like = FALSE)
 	{
@@ -421,8 +421,8 @@
 	/**
 	 * Affected Rows
 	 *
-	 * @access  public
-	 * @return  integer
+	 * @access public
+	 * @return integer
 	 */
 	function affected_rows()
 	{
@@ -434,8 +434,8 @@
 	/**
 	 * Insert ID
 	 *
-	 * @access  public
-	 * @return  integer
+	 * @access public
+	 * @return integer
 	 */
 	function insert_id()
 	{
@@ -451,9 +451,9 @@
 	 * Generates a platform-specific query string that counts all records in
 	 * the specified database
 	 *
-	 * @access  public
-	 * @param   string
-	 * @return  string
+	 * @access public
+	 * @param  string
+	 * @return string
 	 */
 	function count_all($table = '')
 	{
@@ -480,9 +480,9 @@
 	 *
 	 * Generates a platform-specific query string so that the table names can be fetched
 	 *
-	 * @access  private
+	 * @access private
 	 * @param	boolean
-	 * @return  string
+	 * @return string
 	 */
 	function _list_tables($prefix_limit = FALSE)
 	{
@@ -503,9 +503,9 @@
 	 *
 	 * Generates a platform-specific query string so that the column names can be fetched
 	 *
-	 * @access  public
-	 * @param   string  the table name
-	 * @return  string
+	 * @access public
+	 * @param  string the table name
+	 * @return string
 	 */
 	function _list_columns($table = '')
 	{
@@ -519,9 +519,9 @@
 	 *
 	 * Generates a platform-specific query so that the column data can be retrieved
 	 *
-	 * @access  public
-	 * @param   string  the table name
-	 * @return  object
+	 * @access public
+	 * @param  string the table name
+	 * @return object
 	 */
 	function _field_data($table)
 	{
@@ -533,8 +533,8 @@
 	/**
 	 * The error message string
 	 *
-	 * @access  private
-	 * @return  string
+	 * @access private
+	 * @return string
 	 */
 	function _error_message()
 	{
@@ -547,8 +547,8 @@
 	/**
 	 * The error message number
 	 *
-	 * @access  private
-	 * @return  integer
+	 * @access private
+	 * @return integer
 	 */
 	function _error_number()
 	{
@@ -627,11 +627,11 @@
 	 *
 	 * Generates a platform-specific insert string from the supplied data
 	 *
-	 * @access  public
-	 * @param   string  the table name
-	 * @param   array   the insert keys
-	 * @param   array   the insert values
-	 * @return  string
+	 * @access public
+	 * @param  string the table name
+	 * @param  array  the insert keys
+	 * @param  array  the insert values
+	 * @return string
 	 */
 	function _insert($table, $keys, $values)
 	{
@@ -732,11 +732,11 @@
 	 *
 	 * Generates a platform-specific LIMIT clause
 	 *
-	 * @access  public
-	 * @param   string  the sql query string
-	 * @param   integer the number of rows to limit the query to
-	 * @param   integer the offset value
-	 * @return  string
+	 * @access public
+	 * @param  string the sql query string
+	 * @param  integer the number of rows to limit the query to
+	 * @param  integer the offset value
+	 * @return string
 	 */
 	function _limit($sql, $limit, $offset)
 	{
@@ -759,9 +759,9 @@
 	/**
 	 * Close DB Connection
 	 *
-	 * @access  public
-	 * @param   resource
-	 * @return  void
+	 * @access public
+	 * @param  resource
+	 * @return void
 	 */
 	function _close($conn_id)
 	{
diff --git a/system/database/drivers/oci8/oci8_forge.php b/system/database/drivers/oci8/oci8_forge.php
index 3cd1758..589e3c2 100644
--- a/system/database/drivers/oci8/oci8_forge.php
+++ b/system/database/drivers/oci8/oci8_forge.php
@@ -1,4 +1,4 @@
-<?php  if ( ! defined('BASEPATH')) exit('No direct script access allowed');
+<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
 /**
  * CodeIgniter
  *
@@ -90,7 +90,7 @@
 
 				$sql .= "\n\t".$this->db->_protect_identifiers($field);
 
-				$sql .=  ' '.$attributes['TYPE'];
+				$sql .= ' '.$attributes['TYPE'];
 
 				if (array_key_exists('CONSTRAINT', $attributes))
 				{
diff --git a/system/database/drivers/oci8/oci8_result.php b/system/database/drivers/oci8/oci8_result.php
index 88531b4..60d8396 100644
--- a/system/database/drivers/oci8/oci8_result.php
+++ b/system/database/drivers/oci8/oci8_result.php
@@ -1,4 +1,4 @@
-<?php  if ( ! defined('BASEPATH')) exit('No direct script access allowed');
+<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
 /**
  * CodeIgniter
  *
@@ -6,7 +6,7 @@
  *
  * @package		CodeIgniter
  * @author		ExpressionEngine Dev Team
- * @copyright   Copyright (c) 2008 - 2011, EllisLab, Inc.
+ * @copyright  Copyright (c) 2008 - 2011, EllisLab, Inc.
  * @license		http://codeigniter.com/user_guide/license.html
  * @link		http://codeigniter.com
  * @since		Version 1.0
@@ -37,8 +37,8 @@
 	 * so we have to use what amounts to a hack.
 	 *
 	 *
-	 * @access  public
-	 * @return  integer
+	 * @access public
+	 * @return integer
 	 */
 	function num_rows()
 	{
@@ -58,8 +58,8 @@
 	/**
 	 * Number of fields in the result set
 	 *
-	 * @access  public
-	 * @return  integer
+	 * @access public
+	 * @return integer
 	 */
 	function num_fields()
 	{
@@ -102,8 +102,8 @@
 	 *
 	 * Generates an array of objects containing field meta-data
 	 *
-	 * @access  public
-	 * @return  array
+	 * @access public
+	 * @return array
 	 */
 	function field_data()
 	{
@@ -114,7 +114,7 @@
 			$F				= new stdClass();
 			$F->name		= ocicolumnname($this->stmt_id, $c);
 			$F->type		= ocicolumntype($this->stmt_id, $c);
-			$F->max_length  = ocicolumnsize($this->stmt_id, $c);
+			$F->max_length = ocicolumnsize($this->stmt_id, $c);
 
 			$retval[] = $F;
 		}
@@ -145,8 +145,8 @@
 	 *
 	 * Returns the result set as an array
 	 *
-	 * @access  private
-	 * @return  array
+	 * @access private
+	 * @return array
 	 */
 	function _fetch_assoc(&$row)
 	{
@@ -162,8 +162,8 @@
 	 *
 	 * Returns the result set as an object
 	 *
-	 * @access  private
-	 * @return  object
+	 * @access private
+	 * @return object
 	 */
 	function _fetch_object()
 	{
@@ -202,10 +202,10 @@
 	// --------------------------------------------------------------------
 
 	/**
-	 * Query result.  "array" version.
+	 * Query result. "array" version.
 	 *
-	 * @access  public
-	 * @return  array
+	 * @access public
+	 * @return array
 	 */
 	function result_array()
 	{
@@ -230,7 +230,7 @@
 	/**
 	 * Data Seek
 	 *
-	 * Moves the internal pointer to the desired offset.  We call
+	 * Moves the internal pointer to the desired offset. We call
 	 * this internally before fetching results to make sure the
 	 * result set starts at zero
 	 *
diff --git a/system/database/drivers/oci8/oci8_utility.php b/system/database/drivers/oci8/oci8_utility.php
index 854b467..f1fe5dc 100644
--- a/system/database/drivers/oci8/oci8_utility.php
+++ b/system/database/drivers/oci8/oci8_utility.php
@@ -1,4 +1,4 @@
-<?php  if ( ! defined('BASEPATH')) exit('No direct script access allowed');
+<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
 /**
  * CodeIgniter
  *
